// 定义数据格式

Component({
  /**
   * 组件的属性列表
   */
  properties: {

    
    list: {
      type: Array,
      value: []
    },
    list_num:{
      type: Number,
      value: 0
    },
    initSubMenuHighLight:{
      type: Array,
      value: []
    },
    selectIndex:{
      type: Array,
      value: []
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    subMenuDisplay: ['hidden', 'hidden', 'hidden'],//展开/收起子级
    subMenuHighLight:[],//子级高亮
    selected:[],//被选中的子级
  },

  /**
   * 组件的方法列表
   */
  methods: {
    initHighLight:function(){

      var subMenuHighLight = this.properties.initSubMenuHighLight;
      var selectIndex = this.properties.selectIndex;

      this.setData({
        subMenuHighLight: subMenuHighLight,
        selected: selectIndex
      })

      
    },
    initSubMenuDisplay: function() {

      var num = this.properties.list_num;

      var ary = [];
      for(var i = 0;i<num;i++){
       ary.push('hidden');
      }
      return ary;
    },
    tapSubMenu: function(e) {

      var that = this;

      var subMenuHighLight = this.properties.initSubMenuHighLight;
      // 处理二级菜单，首先获取当前显示的二级菜单标识
      var indexArray = e.currentTarget.dataset.index.split('-'); // 初始化状态

      for (var i = 0; i < subMenuHighLight.length; i++) { 
        // 如果点中的是一级菜单，则先清空状态，即非高亮模式，然后再高亮点中的二级菜单；如果不是当前菜单，而不理会。经过这样处理就能保留其他菜单的高亮状态
        if (indexArray[0] == i) {
          for (var j = 0; j < subMenuHighLight[i].length; j++) {
            subMenuHighLight[i][j] = '';
            
          } // 将当前菜单的二级菜单设置回去
        }
      } // 与一级菜单不同，这里不需要判断当前状态，只需要点击就给class赋予highlight即可
 // 设置为新的数组
      var a1 = indexArray[0];
      var a2 = indexArray[1];

      subMenuHighLight[a1][a2] = 'highlight';

      that.setData({
        subMenuDisplay: that.initSubMenuDisplay(), 
        subMenuHighLight: subMenuHighLight
      })
      
      var index_ary = that.data.selected;
      var index_str =a1+'-'+a2;
      index_ary[a1] = index_str;

      this.triggerEvent('myEvent', index_ary);
    },
    tapMainMenu: function(e) {
      var that = this;

      this.initHighLight();
      //获取当前显示的一级菜单标识
      var index = parseInt(e.currentTarget.dataset.index); // 生成数组，全为hidden的，只对当前的进行显示
      var newSubMenuDisplay = that.initSubMenuDisplay(); //        如果目前是显示则隐藏，反之亦反之。同时要隐藏其他的菜单
      if (this.data.subMenuDisplay[index] == 'hidden') {
        newSubMenuDisplay[index] = 'show';
      } else {
        newSubMenuDisplay[index] = 'hidden';
      } // 设置为新的数组
      this.setData({
        subMenuDisplay: newSubMenuDisplay
      });

    }
  }
})